﻿using System.Collections.Generic;
using Neturion.Dados;
using Neturion.IRepositorios;
using Neturion.Repositorios;

namespace Neturion.Negocios
{
    /// <summary>
    /// 
    /// </summary>
    public class NegocioLogradouro
    {
        private IRepositorioLogradouro _repositorioLogradouro;

        /// <summary>
        /// 
        /// </summary>
        public NegocioLogradouro()
        {
            _repositorioLogradouro = new RepositorioLogradouro();
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="logradouro"></param>
        /// <returns></returns>
        public Logradouro Inserir(Logradouro logradouro)
        {
            return _repositorioLogradouro.Inserir(logradouro);
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="logradouro"></param>
        /// <returns></returns>
        public Logradouro Atualizar(Logradouro logradouro)
        {
            return _repositorioLogradouro.Atualizar(logradouro);
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="logradouro"></param>
        public void Excluir(Logradouro logradouro)
        {
            Logradouro logradouroTmp = ObterPorId(logradouro.LogradouroId);
            _repositorioLogradouro.Excluir(logradouroTmp);
        }

        /// <summary>
        /// 
        /// </summary>
        /// <returns></returns>
        public IList<Logradouro> ObterTodos()
        {
            return _repositorioLogradouro.ObterTodos();
        }

        /// <summary>
        /// Obter todos os logradouros
        /// </summary>
        /// <param name="inicio"></param>
        /// <param name="quantidade"></param>
        /// <param name="quantidadeMinima"></param>
        /// <param name="usuarioPermissao"></param>
        /// <param name="cidade"></param>
        /// <param name="bairro"></param>
        /// <param name="tipoLogradouro"></param>
        /// <param name="descricao"></param>
        /// <returns></returns>
        public IList<Logradouro> ObterTodos(int inicio, int quantidade, int quantidadeMinima, Usuario usuarioPermissao, Cidade cidade, Bairro bairro, TipoLogradouro tipoLogradouro, string descricao)
        {
            return _repositorioLogradouro.ObterTodos(inicio, quantidade, quantidadeMinima, cidade, bairro, tipoLogradouro, descricao);
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public Logradouro ObterPorId(int id)
        {
            return _repositorioLogradouro.ObterPorId(id);
        }

        public Logradouro ObterPorCodigo(string codigo)
        {
            return _repositorioLogradouro.ObterPorCodigo(codigo);
        }

        public IList<Logradouro> ObterPorCep(Usuario usuarioPermissao, string cep)
        {
            return _repositorioLogradouro.ObterPorCep(cep);
        }

        public IList<Logradouro> ObterPorDescricao(string descricao)
        {
            return _repositorioLogradouro.ObterPorDescricao(descricao);
        }
    }
}